#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>

/*
函数功能：替换文件中的特定字符
函数参数：源文件，需要替换的字符， 替换为
函数返回值：成功1，失败0
*/
int delChar(const char* file, char ch, char ch_src);

int main(int argc, const char* argv[])
{
    int num = 0;
    num = delChar(argv[1], *argv[2], *argv[3]);
    if(num)
    {
        printf("替换成功！\n");
    }
    else
    {
        printf("替换失败！\n");
    }

    return 0;
}

int delChar(const char* file, char ch, char ch_src)
{
    //打开文件
    int fd = 0;
    fd = open(file, O_RDWR);
    if(fd == -1)
    {
        printf("文件打开失败！ \n");
        return 0;
    }

    //遍历查找
    char tmp = 0;
    int len = 0;
    while((len = read(fd, &tmp, sizeof(char))) != 0)
    {
        if(len == -1)
        {
            printf("读取失败！\n");
            close(fd);
            return 0;
        }

        if(tmp == ch)
        {
            lseek(fd, -1, SEEK_CUR); 
            write(fd, &ch_src, sizeof(char));
        }
    }

    //关闭文件
    close(fd);
    return 1;
}